digits → d(0)
d(x) → if(le(x, s(s(s(s(s(s(s(s(s(0)))))))))), x)
if(true, x) → cons(x, d(s(x)))
if(false, x) → nil
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
↳ QTRS
↳ Overlay + Local Confluence
digits → d(0)
d(x) → if(le(x, s(s(s(s(s(s(s(s(s(0)))))))))), x)
if(true, x) → cons(x, d(s(x)))
if(false, x) → nil
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
digits → d(0)
d(x) → if(le(x, s(s(s(s(s(s(s(s(s(0)))))))))), x)
if(true, x) → cons(x, d(s(x)))
if(false, x) → nil
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
digits
d(x0)
if(true, x0)
if(false, x0)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
D(x) → LE(x, s(s(s(s(s(s(s(s(s(0))))))))))
D(x) → IF(le(x, s(s(s(s(s(s(s(s(s(0)))))))))), x)
DIGITS → D(0)
IF(true, x) → D(s(x))
LE(s(x), s(y)) → LE(x, y)
digits → d(0)
d(x) → if(le(x, s(s(s(s(s(s(s(s(s(0)))))))))), x)
if(true, x) → cons(x, d(s(x)))
if(false, x) → nil
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
digits
d(x0)
if(true, x0)
if(false, x0)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
D(x) → LE(x, s(s(s(s(s(s(s(s(s(0))))))))))
D(x) → IF(le(x, s(s(s(s(s(s(s(s(s(0)))))))))), x)
DIGITS → D(0)
IF(true, x) → D(s(x))
LE(s(x), s(y)) → LE(x, y)
digits → d(0)
d(x) → if(le(x, s(s(s(s(s(s(s(s(s(0)))))))))), x)
if(true, x) → cons(x, d(s(x)))
if(false, x) → nil
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
digits
d(x0)
if(true, x0)
if(false, x0)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
LE(s(x), s(y)) → LE(x, y)
digits → d(0)
d(x) → if(le(x, s(s(s(s(s(s(s(s(s(0)))))))))), x)
if(true, x) → cons(x, d(s(x)))
if(false, x) → nil
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
digits
d(x0)
if(true, x0)
if(false, x0)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
LE(s(x), s(y)) → LE(x, y)
digits
d(x0)
if(true, x0)
if(false, x0)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
digits
d(x0)
if(true, x0)
if(false, x0)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
LE(s(x), s(y)) → LE(x, y)
From the DPs we obtained the following set of size-change graphs:
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
D(x) → IF(le(x, s(s(s(s(s(s(s(s(s(0)))))))))), x)
IF(true, x) → D(s(x))
digits → d(0)
d(x) → if(le(x, s(s(s(s(s(s(s(s(s(0)))))))))), x)
if(true, x) → cons(x, d(s(x)))
if(false, x) → nil
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
digits
d(x0)
if(true, x0)
if(false, x0)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
D(x) → IF(le(x, s(s(s(s(s(s(s(s(s(0)))))))))), x)
IF(true, x) → D(s(x))
le(0, y) → true
le(s(x), s(y)) → le(x, y)
le(s(x), 0) → false
digits
d(x0)
if(true, x0)
if(false, x0)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
digits
d(x0)
if(true, x0)
if(false, x0)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ RemovalProof
D(x) → IF(le(x, s(s(s(s(s(s(s(s(s(0)))))))))), x)
IF(true, x) → D(s(x))
le(0, y) → true
le(s(x), s(y)) → le(x, y)
le(s(x), 0) → false
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ RemovalProof
↳ QDP
↳ NonInfProof
IF(true, x, x_removed) → D(s(x), x_removed)
D(x, x_removed) → IF(le(x, x_removed), x, x_removed)
le(0, y) → true
le(s(x), s(y)) → le(x, y)
le(s(x), 0) → false
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
(1) (D(s(x2), x3)=D(x4, x5) ⇒ D(x4, x5)≥IF(le(x4, x5), x4, x5))
(2) (D(s(x2), x3)≥IF(le(s(x2), x3), s(x2), x3))
(3) (IF(le(x6, x7), x6, x7)=IF(true, x8, x9) ⇒ IF(true, x8, x9)≥D(s(x8), x9))
(4) (le(x6, x7)=true ⇒ IF(true, x6, x7)≥D(s(x6), x7))
(5) (true=true ⇒ IF(true, 0, x12)≥D(s(0), x12))
(6) (le(x13, x14)=true∧(le(x13, x14)=true ⇒ IF(true, x13, x14)≥D(s(x13), x14)) ⇒ IF(true, s(x13), s(x14))≥D(s(s(x13)), s(x14)))
(7) (IF(true, 0, x12)≥D(s(0), x12))
(8) (IF(true, x13, x14)≥D(s(x13), x14) ⇒ IF(true, s(x13), s(x14))≥D(s(s(x13)), s(x14)))
POL(0) = 1
POL(D(x1, x2)) = -1 - x1 + x2
POL(IF(x1, x2, x3)) = -1 - x1 - x2 + x3
POL(c) = -3
POL(false) = 1
POL(le(x1, x2)) = 1
POL(s(x1)) = 1 + x1
POL(true) = 1
The following pairs are in Pbound:
D(x, x_removed) → IF(le(x, x_removed), x, x_removed)
The following rules are usable:
IF(true, x, x_removed) → D(s(x), x_removed)
le(x, y) → le(s(x), s(y))
true → le(0, y)
false → le(s(x), 0)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ RemovalProof
↳ QDP
↳ NonInfProof
↳ AND
↳ QDP
↳ DependencyGraphProof
↳ QDP
IF(true, x, x_removed) → D(s(x), x_removed)
le(0, y) → true
le(s(x), s(y)) → le(x, y)
le(s(x), 0) → false
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ RemovalProof
↳ QDP
↳ NonInfProof
↳ AND
↳ QDP
↳ QDP
↳ DependencyGraphProof
D(x, x_removed) → IF(le(x, x_removed), x, x_removed)
le(0, y) → true
le(s(x), s(y)) → le(x, y)
le(s(x), 0) → false
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))